\chapter{Обмен данными между \LaTeX и отсталым миром}

\section{Преобразование из Ворда в Тех}
Задача: чтобы перейти на прогрессивный \LaTeX с убогого ворда / другого форматированного текста, нужно перевести набранные там документы в \LaTeXовский формат. Как это сделать в открытых системах?
Решение: есть несколько свободных утилит, позволяющих это делать.

\subsection*{Введение}
Обычно теме перевода научных документов из неправильных форматов в \LaTeX уделяют не так много внимания - дескать, кто вкусил \LaTeXа и пользуется им, у того нет неправильных документов. Но что делать, если вы решили переходить к использованию \LaTeXа и не хочется снова перенабирать формулы? Есть несколько утилит для перевода документов в \LaTeX, в том числе и открытых.
Ниже приводятся примеры конвертации моего отчёта по преддипломной практике с формулами и рисунками.

\subsection{OpenOffice.org -> SWX -> writer2latex + Java = LaTeX}
Вот такая хитрая цепочка, дающая очень приличный результат. Да, скрипты writer2latex встроены в ОпенОфис, начиная с версии 2.0.4, но работают они там пока как-то странно. Посему проще всего просто скачать эти утилиты, распаковать в домашнем каталоге (чтобы не править конфиг внутри скрипта) и дать права на исполнение.

\subsubsection*{Реализация}
Для конвертации нужна Java (у меня работает с java 1.4), которую можно установить из репозитория. После этого открываем вордовый документ, сохраняем его в формат
SWX в каталог writer2latex04. Теперь осталось зайти в этот каталог и
набрать:

\verb+~/writer2latex04$ ./w2l имядокумента+

На что вам ответят:

\begin{verbatim}
This is Writer2LaTeX, Version 0.4 (2005-07-01)
Starting conversion...
Done!
\end{verbatim}
Всё, в каталоге появится такой же файл с расширением \verb+имя_документа.tex+ - его можно открыть, например, в Kile и скомпилировать.

\subsubsection*{Результат}
Формулы набираются почти без нареканий (отдельные греческие буквы с индексами могут быть набраны с искажениями), оформление передаётся прекрасно, и на рисунки ставляются ссылки. Проблему кодировок создатели этих скриптов обошли просто: кириллические символы набираются тэгами:
\begin{verbatim}
    {\centering\selectlanguage{russian}\bfseries
    {\textquotedbl}{\CYRC}{\cyri}{\cyrf}{\cyrr}{\cyro}{\cyrv}{\cyro}{\cyre}
    {\cyrv}{\cyro}{\cyrs}{\cyrs}{\cyrt}{\cyra}{\cyrn}{\cyro}{\cyrv}{\cyrl}{\cyre}{\cyrn}{\cyri}{\cyre}
    {\cyri}{\cyrz}{\cyro}{\cyrb}{\cyrr}{\cyra}{\cyrzh}{\cyre}{\cyrn}{\cyri}{\cyrishrt},
    {\cyrz}{\cyra}{\cyrk}{\cyro}{\cyrd}{\cyri}{\cyrr}{\cyro}{\cyrv}{\cyra}{\cyrn}{\cyrn}{\cyrery}{\cyrh}
    {\cyro}{\cyrp}{\cyrt}{\cyri}{\cyrch}{\cyre}{\cyrs}{\cyrk}{\cyri}{\cyrm}
    {\cyrm}{\cyre}{\cyrt}{\cyro}{\cyrd}{\cyro}{\cyrm}{\textquotedbl}
    \par}
\end{verbatim}
Выглядит жутко, но при компиляции документа всё смотрится хорошо, что видно на рисунке:

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{WordToLatex-writer2latex}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:WordToLatex-writer2latex}
\end{figure}

В принципе, никто не мешает создать (или погуглить, наверняка кто-то уже написал) перловый скрипт, который заменит тэги кириллицы на буквы в текущей кодировке. Во всяком случае, главно - формулы, сохранены и набраны очень хорошо.

Плюсы:
\begin{itemize}
\item [+] Прекрасный перевод формул, набранных в ЗлоВорде или ОпенОфисе в \LaTeX.
\item [+] Отличное сохранение форматирования, таблиц, точных размеров (важно для титульных листов)
\item [+] Одно из лучших свободных средств конвертирования в \LaTeX, наравне с лучшими проприетарными аналогами.
\end{itemize}

Минусы:
\begin{itemize}
\item [-] Кириллица в тэгах, для редактирования текста придётся переконвертировать в текст текущей кодировки.
\item [-] Не всегда правильная конвертация греческих букв с индесами.
\end{itemize}


\subsection{OpenOffice.org -> HTML -> gnuhtml2latex = \LaTeX}
Вариант проще и с несколько иной "заточкой", предназначенный прежде всего для перевода в \LaTeX форматированного текста. Утилита gnuhtml2latex входит в дистрибутив Дебиан и представляет собой перловый скрипт, который переводит форматирование HTML в \LaTeX2е.

\subsubsection*{Реализация}
Для работы этого скрипта Java не нужна, но нужен Perl - который должен быть в системе любого уважающего себя линуксоида :-) Скрипт имеет мало параметров

\verb+$ gnuhtml2latex имя_документа+

Если вам повезёт, то в текущем каталоге появится теховский файл. Но качество перевода математических документов, конечно, ниже среднего: текст есть, не в тэгах, но формулы не набраны (даже рисунками), часть текста может быть в другой кодировке, код ужасен и требует набильника крупного калибра. Всё-таки, справедливости ради, скрипт писался не для того: прежде всего, целью программы был перевод форматированных документов в \LaTeX. С текстами типа блоггерских записей он справляется прекрасно, но математика, конечно, выше его сил.

\subsubsection*{Результат}
Говоря кратко, для перевода математических документов gnuhtml2latex просто непригоден. Только форматированный текст, и то после этого код нуждается в напильнике (так как перед сном на него лучше не смотреть).

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{WordToLatex-gnuhtml2latex}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:WordToLatex-gnuhtml2latex}
\end{figure}

Вот что осталось от математики: одни обломки. В общем, хорошей жизни никто не обещал.

Плюсы:
\begin{itemize}
\item [+] Хорошее сохранение форматирования, пригоден для текстов несложного оформления.
\item [+] Не требует Java.
\end{itemize}

Минусы:
\begin{itemize}
\item [-]Математические тексты не переводит, часть текста может запросто оказаться в другой кодировке.
\item [-] Выдаваемый код довольно жуткий, потребуется крупный напильник.
\end{itemize}


\subsection{AbiWord -> \LaTeX}
Чуть не забыли старика-Абиворда, и очень зря. В былые годы это был чуть ли не единственный текстовый процессор, способный читать и конвертирвать много форматов, в том числе ЗлоВорд. AbiWord имеет свои коверторы для многих форматов, в том числе для злоВорда, \LaTeXа и ОпенОфиса (в версии 2.2.7, что в Сарже) формата SWX. Так что при совсем безысходных случаях можно и АбиВорд использовать.

\subsubsection*{Реализация}
Это графическое приложение, так что как тыкать по кнопкам, думаю, объяснять не надо. Просто открываем документ (SWX, HTML или даже вордовый), ищем в перечне типов файлов \LaTeX и сохраняем.

\subsubsection*{Результат}
Мягко говоря, страшноват, но лучше того, что сделал с математикой gnuhtml2latex. AbiWord даже набрал греческие символы, но длинные формулы всё-таки запорол: во всяком случае, индексы он набирает отступами и точным позиционированием текста. Что моветон, конечно.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{WordToLatex-abiword}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:WordToLatex-abiword}
\end{figure}

Результат не впечатляет, и по коду после этого придётся долго елозить напильником.

Плюсы:
\begin{itemize}
\item [+] Графическое приложение, кнопочки.
\item [+] Вменяемо сохраняет форматировку и греческие буквы.
\end{itemize}

Минусы:
\begin{itemize}
\item [-] Код страшен и ``в лоб'' не скомпилируется, требует применения напильника, паяльника и мощной кувалды.
\end{itemize}



\subsection{catdoc -> LaTeX}
Эта небольшая, но очень полезная утилита способна читать и декодировать форматы ЗлоВорда, вплоть до ЗлоВорда2000. Очень маленькая, но позволяет сохранять файл ворда либо в простом тексте, либо (с небольшими добавками) формат \LaTeX.

\subsection*{Реализация}
После установки apt-get install catdoc, можно выполнять команду конвертации:

\verb+catdoc -t PredDiplomPractice.doc > PredDiplomPracticeCAT.tex+

Утилита имеет несколько параметров, но всё-таки больше пригодна не для переведения в \LaTeX документов (так как математика в этом случае почти в полном объёме уходит лесом), а для включения в скрипты и анализа документов.

\subsubsection*{Результат}
Только текст с некоторыми примесями тэгов \LaTeXа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах (которые и в самом \LaTeXе можно набрать).

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{WordToLatex-catdoc}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:WordToLatex-catdoc}
\end{figure}

Результат - только текст с небольшими вкраплениями формул.

Плюсы:
\begin{itemize}
\item [+] Маленькая и быстрая утилиа.
\end{itemize}

Минусы:
\begin{itemize}
\item [-] Всё остальное: нет формул, картинок, сносок и прочего. Только слегка отформатированный текст.
\end{itemize}


\subsection{wv -> \LaTeX}
Группа утилит, которые по мере своих скромных сил справляются с засильем документов ЗлоВорда: с 6 до 200 версии включительно. Входит в Дебиан, тянет за собой tetex-base и ImageMagick. Утилит много

\begin{verbatim}
wvAbw         wvDVI         wvPDF         wvText       
wvCleanLatex  wvHtml        wvPS          wvVersion    
wvConvert     wvLatex       wvRTF         wvWare       
wvDocBook     wvMime        wvSummary     wvWml 
\end{verbatim}

\subsection*{Реализация}
После установки apt-get install catdoc, можно выполнять команду конвертации:

\verb+wvLatex PredDiplomPractice.doc PredDiplomPracticeWV.tex+

Утилита имеет несколько параметров, но всё-таки больше пригодна не для
переведения в \LaTeX документов (так как математика в этом случае почти
в полном объёме уходит лесом), а для включения в скрипты и анализа
документов.

\subsection*{Результат}
Только текст с некоторыми примесями тэгов \LaTeXа. Почти нет форматирования, не говоря уже о формулах и рисунках. Только в крайнем случае при очень простых текстах (которые и в самом \LaTeXе можно набрать).
\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{WordToLatex-cwv}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:WordToLatex-cwv}
\end{figure}

Результат - только текст с небольшими вкраплениями формул.

Плюсы:
\begin{itemize}
\item [+]Маленькая и быстрая утилиа.
\end{itemize}

Минусы:
\begin{itemize}
\item [-]Всё остальное: мало формул, картинок, сносок и прочего. Только слегка отформатированный текст.
\end{itemize}


\subsection{Заключение}
При том количестве свободных утилит, которые способны переводить документы из закрытого, проприетарного и патентованного формата \verb+Мелко$офт+ Ворд в формат LaTeX, конвертация осуществима и практически без потерь форматирования, формул и денег (на заброшенное поделие word2tex).






\section{Преобразование из Теха в Ворд}
Как было бы прекрасно, если бы все в научном мире применяли бы LaTeX так же широко, как сейчас применяется ворд - это избавило бы людей от множества проблем и высвободило кучу времени.
Быль: из-за полного отсутствия компьютерной грамотности, подавляющее большинство научных работников (даже технарей) вообще не подозревают о существовании LaTeX, и уродуются с вордом - так что если вы встали на прогрессивный путь, извольте конвертировать файлы LaTeX в Word.

\subsection*{Введение}
В силу принципиально худшего метода набора визуальных текстовых процессоров, точной и полной конвертации быть не может по определению: всё равно придётся немного ``обработать напильником''. В зависимости от метода конвертации, может потребоваться ещё и кувалда (написание скриптов для исправления в документе). Ниже я приведу способы конвертации, над которыми корпел сам. Если кто знает другие и лучшие методы - убедительная просьба не скупиться на комментарии. В заголовках будет содержаться цепочка конвертации до опенофиса, так как дальше всё очевидно.\par
На рисунке показан документ таким, как он выглядит в \LaTeX, после перевода в формат DVI. Всё красиво и замечательно - посмотрим, во что превратится это великолепие при переводе в ЗлоВорд.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{LatexTOWord-Ideal}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:LatexTOWord-Ideal}
\end{figure}


\subsection{latex2html -> HTML -> OpenOffice}
Есть утилита latex2html, которая позволяет со множеством опций переводить созданный в \LaTeX документ в гипертекст. Есть несколько неприятных моментов: в HTML нет понятия ``разделения на страницы'', трудно переводить формулы (только графикой) и математические символы.\par
У latex2html очень впечатляющий man, в котором можно выцедить много интересного. Например, чтобы утилита переводила текст в одну страницу.

\subsubsection*{Реализация}
Генерируем любой оболочной dvi-файл, чтобы в каталоге ещё остался файл .aux, после чего даём команду в консоли в каталоге, где лежит документ:

\verb+latex2html -split 0  -external_file 2006fullReport.aux 2006fullReport.tex+

Здесь был использован внешний файл aux (содержит информацию о перекрёстных ссылках) и текст выводился в файл html без разделений на подстраницы. После этого появляется каталог 2006fullReport, в котором лежит много файлов, в том числе нужный нам 2006fullReport.html - его открываем OpenOffice. Копируем текст с рисунками в буфер обмена, вставляем в новый документ OpenOffice, и достаём крупный напильник.

\subsubsection*{Результат}
Неплохо, но полученный документ требует серьёзной доводки. Рисунки вставлены в натуральную величину, все тонкие подгонки ушли на север, ссылок на рисунки нет (только гиперссылки). Формулы - рисунками, зато поставлена правильная нумерация формул. Есть ещё очень крупный минус: рисунки в текст внедрить не удаётся, это просто ссылки.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{LatexTOWord-latex2html}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:LatexTOWord-latex2html}
\end{figure}

В общем, этот способ подходит скорее для веб-публикаций документов, не содержащих сложного оформления или формул.

Плюсы:
\begin{itemize}
\item [+] есть оглавление;
\item [+] хорошо передаётся оформление документа;
\end{itemize}

Минусы:
\begin{itemize}
\item [-]формулы в виде графики, ссылок на рисунки нет,
\item [-]рисунки в натуральную величину, группы рисунков не передаются.
\item [-]большинство рисунков не внедряются в документ и не могут быть сохранены как RTF (например, графики в PS).
\end{itemize}

\subsection{latex2rtf -> RTF -> OpenOffice}
Утилита latex2rtf не входит в дистрибутив Дебиан, но может быть поставлена из внешних репозиториев. Позволяет перевести LaTeX-документ в RTF, после чего легко открывается ОпенОфисом. Параметров у утилиты не так много, перевод сравнительно неплох, но напильник далеко откладывать не стоит.

\subsubsection*{Реализация}
Генерируем любой оболочкой dvi-файл со всеми сопутствующими файлами, после чего даём команду в консоли в каталоге, где лежит документ:

\verb+latex2rtf -F -M12 -a 2006fullReport.aux -b 2006fullReport.bbl 2006fullReport.tex+

Параметр -F заставляет делать изображения из всех вставленных рисунков, опции -a и -b используют файлы aux и bbl соответственно. Параметр -M12 конвертирует все математические символы в рисунки - медленно, но зато потом не возникает трудностей с формулами.\par
Результатом этого будет единственный файл rtf. Генерироваться это будет достаточно долго, так что наберитесь терпения. В нём все формулы и математические символы будут в виде рисунков. Полученный файл rtf открываем OpenOffice, и немного проходимся напильником по размеру изображений и сразу меняем поля страницы.

\subsubsection*{Результат}
Достаточно хорошо, есть нумерация рисунков, сами рисунки несколько больше, но в в нормальном качестве и пропорционально тому, что было указано в \LaTeXовском документе. Библиографические ссылки есть, и, что особенно радует, сделаны в виде переменных. Но зато вместо слов "Глава" и "Литература" красуются "Chapter" и "Bibliography" соответственно. В целом, если исправить размеры рисунков, то выглядит совсем не дурно.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{LatexTOWord-latex2rtf}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:LatexTOWord-latex2rtf}
\end{figure}

Единственный финт, который не пройдёт, это два рисунка в minipage  с подписями к каждому. Это приведёт к тому, что вся вторая подпись станет рисунком, вместе с номером. Так что перед конвертацией возможно придётся сделать копию документа и поправить подписи. Кроме того, отсутствует оглавление, которое, впрочем, можно выдрать другими конверторами.

Плюсы:
\begin{itemize}
\item [+]удовлетворительная вставка рисунков;
\item [+]хорошо передаётся оформление документа;
\item [+]есть нумерация рисунков, библиографии и таблиц.
\end{itemize}

Минусы
\begin{itemize}
\item [-]есть неправильная трансляция в сложных группах изображений с подписями;
\item [-]нет оглавления в конечном тексте.
\end{itemize}


\subsection{tex4ht -> HTML -> OpenOffice}
Конвертер tex4ht - вещь очень мощная, но настолько отвратительно документированная в man-страницах, что хоть в гугл беги. Собственно, именно из гугления были найдены необходимые (и весьма не очевидные) параметры для конвертации в HTML.

\subsubsection*{Реализация}
Для этого нужно установить пакеты:

\verb+apt-get install tex4ht dvipng+

после чего можно использовать многочисленные утилиты. Теперь для конвертации указываем в каталоге с \LaTeXовским файлом:

\verb+htlatex 2006fullReport.tex "html,word"+

Как вариант, можно указать параметры для перевода с поддержкой MathML:

\verb+htlatex 2006fullReport.tex "xhtml,mathml-"+

Результат визуально очень похожий.

\subsubsection*{Результат}
Результирующий файл будет с тем же именем, но расширением html. Результат хорош, есть рисунки и ссылки на формулы, есть оглавление и список литературы.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{LatexTOWord-htlatex}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:LatexTOWord-htlatex}
\end{figure}

Но рисунки, вставленные в ряд, появятся в вертикальном расположении, формулы будут в виде изображений.

Плюсы:
\begin{itemize}
\item [+]удовлетворительная вставка рисунков;
\item [+]хорошо передаётся структура и оформление документа;
\item [+]есть нумерация рисунков, библиографии и таблиц;
\end{itemize}

Минусы:
\begin{itemize}
\item [-]трудности со статической вставкой рисунков.
\end{itemize}








\subsection{tth -> HTML -> OpenOffice}
На самом деле tth - это конвертор в HTML, заточенный под перевод научных документов. Переводит оглавление в ``кликабельном'' виде - но русские буквы в оглавлении не видны. Есть возможность переводить библиографические ссылки, сноски и отсылки на формулы - всё это так же будет работать. Очень удобно, когда что-то пишется в \LaTeX а потом кновертируется в HTML для опубликования на веб-страницах

\subsubsection*{Реализация}
Для этого нужно установить пакеты:

\verb+apt-get install tth+

после чего можно использовать утилиты, о которых говорится в man tth - очень, кстати, неплохом. Например, чтобы сконвертировать описанный выше документ, следует набрать команду:

\verb+ tth -u -c -f9 -i -n2 2006fullReport.tex > 2006fullReport.html+

Результат хорош для веб-публикации: есть ссылки по главам, на формулы и рисунки, библиография переводится, картинки вставляются.

\subsubsection*{Результат}
Результирующий файл будет с тем же именем, но расширением html. Результат хорош, ссылки по главам, на формулы, рисунки, библиографию.

\begin{figure}[H]
        \center{\includegraphics[width=0.8\linewidth]{LatexTOWord-tth}}
        \caption{Текст, набранный в \LaTeX для перевода в другой формат}
        \label{ris:LatexTOWord-htlatex}
\end{figure}

Плюсы:
\begin{itemize}
\item [+]ссылки вставлены прекрасно: на рисунки, формулы, разделы и библиографию;
\item [+]хорошо вставляются математические символы и греческие буквы;
\end{itemize}

Минусы:
\begin{itemize}
\item [-] не все математические символы могут быть переданы;
\item [-] оформление в ряде случаев не передаётся.
\end{itemize}


\subsection{Итоги}
В общем, конвертация свободными программами возможна, хотя и не полная. Есть ещё проприетарное поделие tex2word, но оно стоит 100 плюс требует MathType, который тоже платный. Плюс платный мелкоВорд... При полностью бесплатном и свободном \LaTeXе это даже жлобством мало назвать.\par
Так что применяя свободные утилиты и некоторые усилия напильником, можно подогнать \LaTeXовский документ к вордовому состоянию - только лучше на него не смотреть, результат (по сравнению с прекрасным экземпляром в \LaTeX) смотрится как карикатура.
